package com.gaogzhen.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.gaogzhen.domain.CashRecharge;
import com.gaogzhen.domain.CashWithdrawAuditRecord;
import com.gaogzhen.domain.CashWithdrawals;
import com.gaogzhen.model.CashSellParam;
import com.gaogzhen.vo.CashTradeVo;

/**
* @description ${description}
* @author Administrator
* @date 2022-11-03 11:43
* @version 1.0
*/
public interface CashWithdrawalsService extends IService<CashWithdrawals>{

    /**
     * 分页查询GCN充值记录
     * @param page          分页
     * @param userId        用户id
     * @param username      用户名
     * @param mobile        手机号
     * @param status        状态
     * @param numMin        充值金额下限
     * @param numMax        充值金额上限
     * @param startTime     开始时间
     * @param endTime       截止时间
     * @return              GCN充值分页记录
     */
    Page<CashWithdrawals> findByPage(Page<CashWithdrawals> page, Long userId, String username, String mobile, Byte status, String numMin, String numMax, String startTime, String endTime);

    /**
     * 导出GCN提现记录
     * @param userId        用户id
     * @param username      用户名
     * @param mobile        手机号
     * @param status        状态
     * @param numMin        充值金额下限
     * @param numMax        充值金额上限
     * @param startTime     开始时间
     * @param endTime       截止时间
     */
    void exportCNYWithDrawals(Long userId, String username, String mobile, Byte status, String numMin, String numMax, String startTime, String endTime);

    /**
     * 提现审核
     * @param adminId           审核管理员
     * @param auditRecord       审核记录
     */
    void updateWithdrawalsStatus(Long adminId, CashWithdrawAuditRecord auditRecord);

    /**
     * 查询当前用户提现记录
     * @param userId    用户id
     * @param page      分页
     * @param status    状态
     * @return          用户提现记录
     */
    Page<CashWithdrawals> findUserCashWithdrawals(Long userId, Page<CashWithdrawals> page, Byte status);

    /**
     * GCN卖出
     * @param userId        当前用户
     * @param cashSellParam GCN卖出参数
     * @return              卖出结果
     */
    void sell(Long userId, CashSellParam cashSellParam);
}
